package com.wxy.learn.oop.action;

import com.wxy.learn.oop.animal.Cat;
import com.wxy.learn.oop.animal.Dog;
import com.wxy.learn.oop.animal.Monkey;

/**
 * 运行方法
 *
 * @author wxy
 * @since 2023-01-01
 */
public class ActionExecuteCase2Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        Cat cat = new Cat();
        Monkey monkey = new Monkey();

        /*---不将父类作为参数---*/

        // 执行dog吃的动作, 输出: dog eat meat
        NotUsedOop.dogAction(dog);
        // 执行cat吃的动作, 输出: cat eat fish
        NotUsedOop.catAction(cat);

        /*---将父类作为参数---*/

        // 执行dog吃的动作, 输出: dog eat meat
        UsedOop.animalAction(dog);
        // 执行cat吃的动作, 输出: cat eat fish
        UsedOop.animalAction(cat);
        // 执行monkey吃的动作, 输出: animal eat food
        UsedOop.animalAction(monkey);

        /*
        通过上述代码可以看出,
        1.不提取公共父类: 如果有n种动物需要我们执行吃这个动作, 我们需要写100个方法
        2.提取公共父类: 一个方法满足n种动物执行吃的动作
         */
    }
}
